package com.mediator.Mediator;

import com.mediator.Request.IEmptyRequest;
import com.mediator.Request.INotification;
import com.mediator.Request.IRequest;

import java.lang.reflect.InvocationTargetException;

public interface IMediator {

    <R> R Send(IRequest<R> value) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;
    <T>void Publish(INotification<T> notification);
    void Send(IEmptyRequest val);
}
